package com.zenithmind.chat.pojo.vo;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 聊天群组VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
public class ChatGroupVO {

    /**
     * 群组ID
     */
    private String id;

    /**
     * 群组名称
     */
    private String name;

    /**
     * 群组描述
     */
    private String description;

    /**
     * 群组头像
     */
    private String avatar;

    /**
     * 群组类型（1-普通群，2-课程群，3-项目群，4-系统群）
     */
    private Integer type;

    /**
     * 群组类型文本
     */
    private String typeText;

    /**
     * 群组状态（0-禁用，1-启用）
     */
    private Integer status;

    /**
     * 群组状态文本
     */
    private String statusText;

    /**
     * 群主ID
     */
    private String ownerId;

    /**
     * 群主姓名
     */
    private String ownerName;

    /**
     * 最大成员数
     */
    private Integer maxMembers;

    /**
     * 当前成员数
     */
    private Integer memberCount;

    /**
     * 是否允许邀请（0-不允许，1-允许）
     */
    private Integer allowInvite;

    /**
     * 是否需要审核（0-不需要，1-需要）
     */
    private Integer needApproval;

    /**
     * 是否公开（0-私有，1-公开）
     */
    private Integer isPublic;

    /**
     * 群组标签
     */
    private List<String> tags;

    /**
     * 群公告
     */
    private String announcement;

    /**
     * 公告发布时间
     */
    private LocalDateTime announcementTime;

    /**
     * 关联课程ID
     */
    private String courseId;

    /**
     * 关联课程名称
     */
    private String courseName;

    /**
     * 关联项目ID
     */
    private String projectId;

    /**
     * 关联项目名称
     */
    private String projectName;

    /**
     * 排序值
     */
    private Integer sort;

    /**
     * 最后一条消息
     */
    private ChatMessageVO lastMessage;

    /**
     * 未读消息数
     */
    private Integer unreadCount;

    /**
     * 当前用户在群组中的角色（1-群主，2-管理员，3-普通成员）
     */
    private Integer userRole;

    /**
     * 当前用户是否已加入
     */
    private Boolean isJoined;

    /**
     * 当前用户是否被禁言
     */
    private Boolean isMuted;

    /**
     * 当前用户禁言到期时间
     */
    private LocalDateTime muteEndTime;

    /**
     * 是否置顶
     */
    private Boolean isTop;

    /**
     * 是否免打扰
     */
    private Boolean isDisturbFree;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 创建人
     */
    private String createBy;

    /**
     * 更新人
     */
    private String updateBy;
}
